/**
* 将经纬度转换为度分秒格式
* @param du 度数 116.418847
* @return 116°25'7.85"
*/
public static Integer[] changeToDFMArray(double du) {
Integer[] dfmArray=new Integer[3];//[0] 度 ,[1] 分 ,[2] 秒
try {
//double dd = Convert.ToDouble(str);
String str = "" + du;
int p = str.indexOf(".");
int dt = Integer.parseInt(str.substring(0, p));
du = du - dt;
double M = du * 60;
int mt = (int) M;
M = (M - mt) * 60;
if (Math.abs(M - 60) < 0.001) {//秒精确到小数点后三位,小于0.001向前进位,秒为0,分加1,分为60,度加1
M = 0;
mt = mt + 1;
}
if (mt == 60) {
dt = dt + 1;
mt = 0;
}
dfmArray[0]=dt;
dfmArray[1]=mt ;
dfmArray[2]=(int) Math.round(M);// 四舍五入 小数点前整数进位
} catch(Exception e) {
logger.error("小数格式度转度分秒异常:"+e.getMessage(),e);
}
return dfmArray;
}